<?  
  set_time_limit(4500);
  /* Se asegura que el archivo es incluido por el index */
    defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );  
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Atributo_exe( $this );
    
	class Atributo_exe extends Exe
	{
	function Atributo_exe( &$oModule )
		{
			$this->oModule = &$oModule;
      // Valida que el Entorno sea el Parametrico
        if ( ES_PARAMETRICO == false ) 
        {
          addMessage('Esta accion solo puede hacerse en el entorno parametrico');
          $this->oModule->back();    
        } 
		}
  // MODIFICAR_ATRIBUTO_DE_UNA_CLASE
  function update()
    {
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'atributo_frm' );
			extract( $oForm->getFieldArray() );
      // Modifica el registro
      $this->oModule->oDatabase->update("stClaseAtributo", 
                "cDescripcion", $cDescripcion,  
                "ncTipoAtributo", $ncTipoAtributo, 
                "cFisico", $cFisico, 
                "cdAtributo", $cdAtributo, 
                "fLongitud", $fLongitud, 
                "cdClaseAtributo", $cdClaseAtributo, 
                "WHERE", 
                "ncAtributo", $ncAtributo, "ncClase", $ncClase );
      $oForm->reset();
			// Redirecciona la siguiente accion
			$this->oModule->setRedirect( MODIFICAR_CLASE, "ncClase=$ncClase" );
    }        
  // AGREGAR_ATRIBUTO_DE_UNA_CLASE
  function insert()
    {
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'atributo_frm' );
			extract( $oForm->getFieldArray() );
      // Busca la proxima clave
      $ncAtributo = $this->oModule->oDatabase->nextKey("stClaseAtributo", "ncAtributo", "ncClase=$ncClase" );
      // Agrega el registro
      $this->oModule->oDatabase->insert("stClaseAtributo", "cDescripcion", $cDescripcion,  "ncTipoAtributo", $ncTipoAtributo, "cFisico", $cFisico, "cdAtributo", $cdAtributo, "fLongitud", $fLongitud, "cdClaseAtributo", $cdClaseAtributo, "ncAtributo", $ncAtributo, "ncClase", $ncClase );
      $oForm->reset();
			// Redirecciona la siguiente accion
			$this->oModule->setRedirect( MODIFICAR_CLASE, "ncClase=$ncClase" );
    }
    
  // ELIMINAR_ATRIBUTO_DE_UNA_CLASE:
  function delete()
    {
		// Obtiene los Parametros
		$ncClase		  = getParam( "ncClase" );    	
		$ncAtributo  = getParam("ncAtributo" );    	
		// Elimina el registro
		$this->oModule->oDatabase->delete("stClaseAtributo",  "ncAtributo", $ncAtributo,  "ncClase", $ncClase );
		// Redirecciona la siguiente accion
		$this->oModule->setRedirect( MODIFICAR_CLASE, "ncClase=" . $ncClase );
    }
  // COPIAR_ATRIBUTOS_DE_OTRA_TABLA:
  function copyFromTable()
    {
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'copiar_atributo_frm' );
			extract( $oForm->getFieldArray() );
      if ( $cAtributos  ) 
      {
        // Busca la proxima clave
        $ncAtributo = $this->oModule->oDatabase->nextKey("stClaseAtributo", "ncAtributo", "ncClase = $ncClaseBase");
        // Por cada Atributo seleccionado
        $cSql = "SELECT ncAtributo,cdAtributo,cFisico,cDescripcion,cdClaseAtributo,cPropiedades,fLongitud,ncTipoAtributo,nOrden,ncTermino 
                    FROM stClaseAtributo
                    WHERE ncClase = $ncClase
                    AND   ncAtributo IN ($cAtributos ) ";
        $this->oModule->oDatabase->query($cSql);
        while( $this->oModule->oDatabase->moveNext() ) 
        {
          // Agrega el registro
          $this->oModule->oDatabase->insert("stClaseAtributo", "ncAtributo" , $ncAtributo, "cdAtributo", $this->oModule->oDatabase->aFields['cdAtributo'], "cFisico", $this->oModule->oDatabase->aFields['cFisico'], "cDescripcion", $this->oModule->oDatabase->aFields['cDescripcion'], "cdClaseAtributo", $this->oModule->oDatabase->aFields['cdClaseAtributo'], "cPropiedades", $this->oModule->oDatabase->aFields['cPropiedades'],"fLongitud", $this->oModule->oDatabase->aFields['fLongitud'], "ncTipoAtributo", $this->oModule->oDatabase->aFields['ncTipoAtributo'], "nOrden", $this->oModule->oDatabase->aFields['nOrden'], "ncTermino", $this->oModule->oDatabase->aFields['ncTermino'], "ncClase", $ncClaseBase );
          $ncAtributo++;
        }
      }
      $oForm->reset();
			// Redirecciona la siguiente accion
			$this->oModule->setRedirect( MODIFICAR_CLASE, "ncClase=$ncClase" );
    }
	}
?>
